package main

import (
	"fmt"
	"strings"
)

// 字符串常用方法二
func main() {
	testLastIndex()

	testSplit()

	testReplace()

	testToLower()

	testToUpper()
}

// testLastIndex
//
//	@Description:  一个字符串中包含另一个字符串的最后一个索引，如果没有返回-1
func testLastIndex() {
	fmt.Println("----------------  一个字符串中包含另一个字符串的最后一个索引，如果没有返回-1 ----------------")
	var str string = "chinese"
	var sub1 string = "chinese"
	var sub2 string = "abc"

	index1 := strings.LastIndex(str, sub1)
	fmt.Printf("%s在%s 出现的LastIndex: %d  \n", sub1, str, index1)
	//chinese在chinese 出现的LastIndex: 0

	index2 := strings.LastIndex(str, sub2)
	fmt.Printf("%s在%s 出现的LastIndex: %d  \n", sub2, str, index2)
	//abc在chinese 出现的LastIndex: -1

}

// testSplit
//
//	@Description: 字符串以指定的字符分割，返回一个切片
func testSplit() {
	fmt.Println("---------------- 字符串以指定的字符分割，返回一个切片 ----------------")
	var str string = "hello,zhgansan,list"
	var sep string = ","
	split := strings.Split(str, sep)
	fmt.Printf("%s以%s分割最后变为 %v \n", str, sep, split)
	//hello,zhgansan,list以,分割最后变为 [hello zhgansan list]

}

//
// testReplace
//  @Description: 字符串中某些字符串以指定的字符替换，返回一个新的字符串
//

func testReplace() {
	fmt.Println("----------------  字符串中某些字符串以指定的字符替换，返回一个新的字符串 ----------------")
	var str string = "hello go go"
	var oldStr string = "go"
	var newStr string = "HHH"
	replace := strings.Replace(str, oldStr, newStr, 1)
	fmt.Printf("%s将%s 换为%s 最后字符串变为 %s \n", str, oldStr, newStr, replace)
	//hello go go将go 换为HHH 最后字符串变为 hello HHH go

	var s1 string = "jack good good hei hei hei"
	var sO string = "good"
	var sN string = "ji"

	all := strings.ReplaceAll(s1, sO, sN)
	fmt.Printf("%s将%s 换为%s 最后字符串变为 %s \n", s1, sO, sN, all)
	//jack good good hei hei hei将good 换为ji 最后字符串变为 jack ji ji hei hei hei
}

// testToLower
//
//	@Description: 字符串转小写
func testToLower() {
	fmt.Println("---------------- 字符串转小写 ----------------")
	var str string = "ALKGLaa"
	lower := strings.ToLower(str)
	fmt.Printf("%s转为小写：%s \n", str, lower)
	//ALKGLaa转为小写：alkglaa

}

// testToUpper
//
//	@Description: 字符串转大写
func testToUpper() {
	fmt.Println("---------------- 字符串转大写 ----------------")
	var str string = "ALKGLaa"
	upper := strings.ToUpper(str)
	fmt.Printf("%s转为大写：%s \n", str, upper)
	//ALKGLaa转为大写：ALKGLAA

}
